package com.bawei.module_live.ui

import com.bawei.module_live.data.LiveData
import com.bawei.module_live.data.LiveShopData
import com.bawei.module_live.data.OrderHotData
import com.bawei.module_live.data.GiftData
import com.bawei.module_live.data.Record

/**
 * 直播间模块 - MVI架构 State层
 * 
 * State定义了UI的所有可能状态，包括：
 * - 初始状态：应用刚启动时的状态
 * - 加载状态：数据请求过程中的状态
 * - 成功状态：数据获取成功的状态
 * - 错误状态：数据获取失败的状态
 * - 空状态：数据为空的状态
 * 
 * 每个State对应UI中的一种显示状态
 */
sealed class LiveState {
    
    /**
     * 初始状态
     * 应用刚启动或重置后的默认状态
     */
    object Init : LiveState()
    
    /**
     * 空状态
     * 当前没有任何数据的状态
     */
    object Empty : LiveState()
    
    /**
     * 加载状态
     * 数据请求过程中的状态，通常显示加载动画
     */
    object Loading : LiveState()
    
    /**
     * 直播列表获取成功状态
     * @param liveList 直播列表数据
     */
    data class LiveListSuccess(
        val liveList: List<LiveData>
    ) : LiveState()
    
    /**
     * 礼物列表获取成功状态
     * @param list 礼物列表数据
     */
    data class GiftListSuccess(
        val list: List<GiftData>
    ) : LiveState()
    
    /**
     * 关注用户成功状态
     * @param isSuccess 是否成功关注
     */
    data class FocuseUserSuccess(
        val isSuccess: Boolean
    ) : LiveState()
    
    /**
     * 取消关注成功状态
     * @param isSuccess 是否成功取消关注
     */
    data class UnFocuseUserSuccess(
        val isSuccess: Boolean
    ) : LiveState()
    
    /**
     * 关注状态查询结果
     * @param isFocuse 是否已关注
     */
    data class FocuseStatus(
        val isFocuse: Boolean
    ) : LiveState()
    
    /**
     * 榜单列表获取成功状态
     * @param orderHotList 榜单列表数据
     */
    data class OrderHotListSuccess(
        val orderHotList: List<OrderHotData>
    ) : LiveState()
    
    /**
     * 直播间商品列表获取成功状态
     * @param shopList 商品列表数据
     */
    data class LiveShopListSuccess(
        val shopList: List<Record>
    ) : LiveState()
    
    /**
     * 错误状态
     * @param errorMsg 错误信息
     */
    data class Error(
        val errorMsg: String
    ) : LiveState()
}